public class dmeo4 {
    //使用递归的方法
    public double myPow(double x, int n) {
        double t=0.0;
        if(n==0)return 1.00000;
        else if(n<0) {
            n=-n;
            t=(1/pow(x, n));
        }
        else {
            t=pow(x, n);
        }
        return t;
    }
    public double pow(double x,int n) {
        if(n==0)return 1.0;
        double temp=pow(x, n/2);
        return n%2==0 ? (temp*temp) : (temp*temp*x);
    }
    //使用循环的方法
    public double myPow1(double x,int n){
        if(n==0)return 1.0;
        if(n<0){
            n=-n;
            x=(1/x);
        }
        double ret=1.0;
        while (n>0){
            if(n%2!=0){
                ret*=x;
            }
            //注意这行的理解
            x*=x;//如果n为偶数最后也会是1进入if语句中
            n/=2;//相当于log n的时间复杂度
        }
        return ret;
    }
}
